package com.znsd.zl.app.wechat.utils;

import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.FileInputStream;
import java.io.InputStream;
import java.nio.channels.FileLockInterruptionException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *      基于DOM4j的xml文件解析工具类
 * </p>
 *
 * @ClassName XMLUtils
 * @Description TODO
 * @Author jaypdd
 * @Date 2020/8/23 16:37
 * @Version v1.0
 */
@Slf4j
public class XmlUtils {

	/**
	 * 解析xml文件中的所有元素以键值对的形式存储到map中
	 * @param fis   xml文件对象
	 * @return      返回map对象
	 */
	public static Map<String, String> getMap(InputStream fis) {
		Map<String, String> map = new HashMap<>(5);
		SAXReader saxReader = new SAXReader();
		Document document = null;
		try {
			document = saxReader.read(fis);
		} catch (DocumentException e) {
			e.printStackTrace();
			log.error("【微信公众号】微信xml格式文件消息解析失败：{}", fis);
		}
		document.getRootElement().elements().forEach( e -> map.put(e.getName(), e.getText()) );
		return map;
	}

}
